草庐IT

Java HotSpot 枚举开销

全部标签

c++ - 我怎样才能部分特化所有枚举的类模板?

假设我有一些类模板:templateclass{//....}我可以通过以下方式为ALL指针部分特化此模板:templateclass{//....}我能以某种方式专门化ALL枚举的模板吗?即,做类似的事情:(虽然这不起作用)templateclass{//....} 最佳答案 使用C++11和SFINAE。#includetemplatestructSpecialize{};templatestructSpecialize::value>::type>{voidconvert(){}};enumE{};intmain(){Spec

c++ - 作用域枚举的最佳替代方案 - Pre C++11

我想在我的代码中的几个地方开始使用枚举,但我对编译器之前的声明有疑问。目前枚举的声明方式对我来说最有意义:避免这种情况的最佳方法是什么?enumscore_methods_t{NONE,ABS_FROM_PERFECT,ERROR_SQUARED};enumscale_methods_t{NONE,CASES_MULTIPLIER,RANGE_MULTIPLIER};我应该让所有东西都独一无二,还是让命名空间成为范围?我想在类中使用枚举类型,NONE是最具描述性的名称!枚举冲突的另一个原因是因为本质上它们只是引擎盖下的#defines?? 最佳答案

c++ - 为什么我应该在 C++ 中使用 typedef 声明一个枚举?

我的代码看起来像这样:enumEEventID{eEvent1,eEvent2,...eEventN};经过审核并更改为typedefenum{eEvent1,eEvent2,...eEventN}EEventID;两者有什么区别?为什么要做出改变?当我看着thisquestion,唯一提到typedef的地方被否决了。 最佳答案 这两者在C++中是相同的,但在C中它们是不同的——在C中,如果你使用typedef,你会得到在C和C++之间兼容的代码(因此可以在头文件中自由使用,可能用于C或C++)。这是我能看到的偏爱它的唯一原因。

c++ - 为什么要在枚举上抛出一个类?

只是想知道,为什么把一个类放在一个枚举上会更好当然扔类是更多的开销?例如enumMyException{except_a,except_b,except_c}voidfunctionf(){throwexcept_a;}intmain(intarc,char*argv[]){try{}catch(MyExceptione){switch(e){except_a:break;except_b:break;except_c:break;}}return0;}除了开销。我还需要为每个可能覆盖std::exception或其他东西的类声明一个类。更多代码、更大二进制文件……有什么好处?

c++ - 跨多个文件共享枚举的正确方法是什么?

我想在当前(C++)项目的客户端和服务器部分使用相同的枚举,但我不确定执行此操作的正确方法。我可以很容易地将枚举写在它自己的文件中,然后将其包含在两个文件中,但感觉这是一种不好的做法。将它放在命名空间中然后将其包含在两者中是否是正确的方法?我知道这有点主观,如果有更好的“最佳实践”问题,请告诉我。编辑(详细说明):我正在将数据从客户端发送到服务器,在这种情况下,我想告诉客户端状态的变化。但是,我想避免每次更改状态时都发送构成状态的所有信息,而是只想发送一个引用数组中索引的数字。所以,我认为最好的方法是使用枚举,但我需要在客户端和服务器上使用相同的枚举,以便它们都能理解这个数字。希望这是

c++ - 如何在 VS C++ 6.0 中递增枚举?

我复制并粘贴了一些递增枚举的代码:myenum++;这段代码在VS.NETC++2003中编译时运行良好我现在在VS6.0中开发并得到错误:errorC2676:binary'++':'enumID'doesnotdefinethisoperatororaconversiontoatypeacceptabletothepredefinedoperator如何让它在6.0中表现相同? 最佳答案 我认为在一个易于理解的枚举上定义operator++没有任何问题。这不就是运算符重载的目的吗?如果上下文没有意义(例如其中有漏洞的枚举),那么

C++ 类、结构、枚举后的分号……没用但编译器仍然会发出错误?

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:InC++classes,whythesemi-colonaftertheclosingbrace这是我很长一段时间都想知道的问题,为什么你必须在C++中的类、结构或枚举的右括号后加上分号?更糟糕的(或实际问题),为什么编译器可以简单地发出警告却发出错误?把那个分号放在那里真的很重要吗,为什么?

c++ - C和C++中枚举的用途是什么

枚举是常量整数值的列表。它可以用来代替使用#define定义常量值。但除此之外,我还没有发现枚举在C和CPP中有任何实质性用途。谁能告诉我枚举的确切用途是什么。最初我认为如果我们创建一个枚举变量并分配一个不在枚举值中的值,编译器会大喊大叫。但事实并非如此。我们可以为枚举变量分配任何值。我想不出枚举的任何实质性用途。 最佳答案 枚举在编程中非常有用,因为它们使您的代码更具可读性和一致性。例如:假设我们有以下switch语句:switch(fruit){case1://codegoesherebreak;case2://codegoes

c++ - 在类中使用枚举时,它会是公开的吗?为什么?

我正在为我正在学习的类(class)使用枚举,我正在使用Google查找示例以确保我正确使用了枚举。我去了几个网站,包括MSDN网站,枚举列在公共(public)而不是私有(private)下。我一直认为数据成员是私有(private)的。我偏离基地了吗?如果是,为什么? 最佳答案 枚举是一种类型,而不是数据成员。如果类的用户需要知道它,你应该公开它;否则,将其设为私有(private)。用户需要了解它的典型情况是将其用作公共(public)成员函数的参数类型。 关于c++-在类中使用枚

c++ - 在 C++ 中,当我需要使用枚举时,如何避免#include 头文件?

在我的C++头文件中,我尝试使用前向声明(classMyClass;)而不是#including类头,正如许多C++编码标准(谷歌C++风格指南就是其中之一)所推荐的那样。不幸的是,当我引入枚举时,我不能再做前向声明了。像这样:////myclass1.hpp////classMyClass1{enumMyEnum1{Enum_A,Enum_B,Enum_C};};////myclass2.hpp//////Iwanttoavoidthis#include"myclass1.hpp"//I'dprefertodothis(forwarddeclaration)classMyClass1